Skip to content

chore(deps): bump @cosyte/ccda from 0.0.8 to 0.0.13 - #44

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/cosyte/ccda-0.0.13
Open

chore(deps): bump @cosyte/ccda from 0.0.8 to 0.0.13#44
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/cosyte/ccda-0.0.13

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 11, 2026

Copy link
Copy Markdown

Bumps @cosyte/ccda from 0.0.8 to 0.0.13.

Release notes

Sourced from @​cosyte/ccda's releases.

v0.0.13

What changed

Internal tooling and CI only. No change to the published package surface.

Install

npm install @cosyte/ccda@0.0.13

npm: https://www.npmjs.com/package/@​cosyte/ccda/v/0.0.13

v0.0.12

What changed

  • Report three plan-surface facts that were previously silent, without changing what the library returns or accepts.
  • Refuse a build whose narrative label is missing, instead of fabricating one.
  • Close the two silent plan drops left stated but unfixed: an edited document short a SHALL element, and a dropped Handoff in the Interventions Section.

Full detail for each change is in CHANGELOG.md.

Install

npm install @cosyte/ccda@0.0.12

npm: https://www.npmjs.com/package/@​cosyte/ccda/v/0.0.12

v0.0.11

What changed

  • CHANGELOG.md, which ships inside the tarball, is now written by the release instead of by hand, so it stops describing already-published code as unreleased.
  • README.md named an accessor that does not exist, and the split between CLAUDE.md and its long-form record is now checked in CI.
  • The README lockup now links to cosyte.com (ASSETS).

Full detail for each change is in CHANGELOG.md.

Install

npm install @cosyte/ccda@0.0.11

npm: https://www.npmjs.com/package/@​cosyte/ccda/v/0.0.11

v0.0.10

What changed

... (truncated)

Changelog

Sourced from @​cosyte/ccda's changelog.

0.0.13

Patch Changes

  • 89c8ec2: phi-scan: scan the tracked corpus every route used to read past

    PHI-SCAN-WALK-ROOT-SCOPE. A PHI gate can print OK, no hits and exit 0 over files no route ever opened. The sibling form of that defect (a walk rooted at src/ + test/fixtures/, leaving everything else under test/ unscanned) did not exist here, because this walk is rooted at the repo root; the census was re-derived from this repo's own tree rather than ported, and it found a different shape with the same effect. Base 941afff: 140 tracked, 96 reached by some detector on the sweeping routes, 44 by neither, 4 of those under test/. Head, same corpus: 139 reached, 1 by neither. 43 files newly opened.

    Three causes, closed on their own terms. Markdown was dropped by the walk before a byte was read, and dropped again by --staged; it is enumerated now and scanned like any other target. The conservative dashed-SSN + email pass was bounded to src/ + scripts/ JS/TS, so the three scripts/*.sh gates the scanner's own docblock claimed to cover, the root build configs, every workflow, LICENSE and the JSON manifests were read and then scanned by nothing; it now runs on every observed target with no path exemption at all. And the test/scripts/ prefix exclusion covered four files where its stated reason names one, so it is a literal path now, excluded from the two sweeping routes rather than from every route.

    There are three routes, not two. all and --staged sweep; paths (pnpm phi-scan <file>) is the third and looksLikeCda governs it too. A first draft exempted markdown from the structured scan on the argument that no route read a .md, and that was false on the route it forgot: a real C-CDA saved as notes.md went from nine hits to OK, no hits there, and the shape floor offered as mitigation is empty for a C-CDA, which carries its SSN as an undashed id@extension and carries no email. That term is gone.

    isSourceCode is deliberately untouched for the same class of reason. It is read with opposite polarity in two places, adding the shape pass in one and subtracting the structured scan in the other, so adding .sh to it would have downgraded any scripts/*.sh carrying a C-CDA marker to shape-only. The widening goes in an additive branch instead, and both guards are written into the source.

    Proved by grid on all three routes, base tree and head tree, with a dashed-SSN payload and then a <family> name payload planted in every tracked file. Shape payload: all 96 to 140, --staged 96 to 140, paths 140 to 141, no regression in any cell. Name payload: all 26 to 39, --staged 26 to 39, paths 42 to 40. Exactly one file is still undetected at head, the one literal exclusion, so the clean cells are decisions about a named file rather than a sweep that stopped running. All 43 newly-opened files were hand-read; none carries patient-identifying content.

    Two cells go from detected to undetected, both on paths, both named rather than claimed away. CHANGELOG.md loses the structured detectors: it is generated output that must not be hand-edited and it quotes this scanner's own negative-control literals, so the gate was flagging its own documentation of itself. That costs the whole structured scan on that file, all five detectors, not just the name one. No locus count is quoted anywhere: the file is regenerated on every release, and two drafts wrote a count that was wrong. The upstream bound is real but narrower than a first draft claimed: .changeset/*.md gets the structured detectors when it carries a C-CDA marker, and gets the dashed-SSN + email shape pass whatever it carries, but a marker-free changeset carrying a bare <given> / <family>, a <birthTime>, a bare-numeric <id> or an address exits 0 (an SSN-rooted <id> with a dashed extension still exits 1, via the shape pass). That last case is pre-existing and identical at base on all three routes. And package.json stops hitting on its own author mailbox, because that one address is now declared in the allow-list.

    Two things this makes newly possible, stated rather than discovered later. Writing documentation is now inside the gate: markdown, the ADR, the agent notes and the changesets became structurally scanned, so a worked example or an incident write-up carrying a non-allow-listed name, DOB, bare-numeric identifier, address or non-555 telecom reds a blocking gate at pre-commit. The predicate is a C-CDA marker rather than the extension, and no file list is quoted, because a marker-free page such as docs-content/troubleshooting.md is shape-pass only. The remedies are to reuse the declared synthetic tokens or to describe the locus without reproducing it, never to delete the write-up. And the CHANGELOG.md exemption is case-sensitive, so on a case-insensitive filesystem phi-scan changelog.md misses it and reds: a false red, which is the safe direction, and matching case-insensitively was refused because it would exempt a genuinely distinct file elsewhere.

    Adds an EMAIL <address> allow-list tag, which declares one mailbox where EMAILDOMAIN would declare every mailbox at a domain. It replaces a draft that exempted package.json by path.

    docs-content/quickstart.md's second worked example now reuses the corpus's declared synthetic patient, keeping the distinct MRN that was the example's point. The scanner lost nothing there: it still reports the old tokens when pointed at the old bytes. Fixing the corpus was preferred to exempting the page.

0.0.12

Patch Changes

  • a29202d: Report three plan-surface facts that were previously silent, without changing what the library returns or accepts.

    A Planned Medication Activity emitted with no effectiveTime is now reported. The template makes it [1..1] (CONF:1098-30468) and BuildCcdaPlannedOrder types it optional, so a planned drug order carrying no timing at all could be emitted with nothing said about it. The field stays optional, because requiring it would be a breaking change to a published input type; instead the returned document carries the new MISSING_PLANNED_MEDICATION_EFFECTIVE_TIME, appended after the re-parse's warnings. The emitted XML is byte-identical to what it was: no date is fabricated and no nullFlavor is invented. It is an emit-side diagnostic: parseCcda does not raise it. (This entry originally shipped it as buildCcda-only, with the editCcda gap stated as a residual; that residual is closed in the same release, see the entry below.) The Planned Immunization Activity is deliberately not checked, because its input type already requires the field.

    Instruction (2.16.840.1.113883.10.20.22.4.20), Handoff Communication Participants (...22.4.141) and Nutrition Recommendation (...22.4.130) are now reported rather than excluded in silence, with the new PLAN_ENTRY_NOT_MODELED, once per matching root. They are three of the four templates a Plan of Treatment Section admits that getPlannedItems() does not return. Reporting is not modelling: nothing about the returned list changed, and each act still reaches no model field and survives only in doc.toString(). A direct <entry> is reported in a section recognized as Plan of Treatment (and, per the entry below, the Interventions Section), so an Instruction in the Instructions Section, where it is that section's own required entry, draws nothing; an act nested in a Planned Intervention Act is reported wherever the container sits. Where it fires is a bound this library chose, not a statement about which sections C-CDA admits these templates in: they appear in more places than the report covers, and an occurrence outside it is still dropped in silence. Goal Observation, the fourth, is deliberately not reported, because the decision taken on it was to model it.

    A setId minted by editCcda is now labelled as synthetic. CDA R2 requires a replacement and its parentDocument to share a version-series setId, so one is minted when the source has none, and that mint invents an identifier. The invention is now recognisable: the new SYNTHETIC_SETID_PREFIX export documents the scheme (a SYNTHETIC-SETID- extension under the synthetic assigning-authority root) and the new isSyntheticSetId export checks for both halves together. A setId the source asserted, or one supplied through revision.setId, is never relabelled. The residual is stated rather than implied: nothing forces a receiving system to read the label, and a false from isSyntheticSetId says only that this library did not mint the id under this scheme, never that the id is real.

    The CCD SHALL-section disagreement between the builder and the parser is untouched and still open; settling it needs the normative R2.1 Schematron, and this change deliberately did not let either side pick a set.

  • 9f1ce33: Refuse a build whose narrative label is missing, instead of fabricating one. Until this release a positively-asserted allergy could be emitted with the narrative "No known allergies".

    The defect, stated plainly, because it is a patient-safety one and it shipped. Every populated section regenerates its <text> narrative from the same BuildCode.displayName the coded entry carries, and links the two with a <reference>, so the narrative is the attested restatement a clinician actually reads. The Allergies section computed that narrative with a fallback: with an allergen carrying no displayName, buildCcda emitted <content>No known allergies</content>, byte-identical to the negated no-known-allergies form, beside an entry that was positively asserted: <value code="419199007"> with no negationInd, the allergen on the <participant>, and the manifestation observation present. The <reference> linkage was intact and the returned document carried zero warnings, so the attested half asserted the clinical opposite of its own entry with nothing anywhere saying so. The same root cause wrote the literal string undefined into seven other narrative slots, "undefined: 1 kg" / "undefined: x" into five more where a label is interpolated into a value line, and a fabricated "unknown" (or "Relative" / "unknown condition") into seven more. Twenty slots in total, one cause.

    displayName is a required field, so none of this is reachable from a TypeScript caller. That is not the guard, because the package ships JavaScript and does its input validation at runtime, which is why this is a real defect rather than a theoretical one. Tightening the type would have closed nothing.

    The remedy is a refusal, and that was a deliberate choice over a warning. buildCcda and editCcda now throw a TypeError naming the field path (for example allergies[].allergen.displayName) and the offending @code, and the fallback that produced the inverted sentence is deleted rather than repointed: the no-known-allergies narrative is now reachable from the negated branch and no other. Substituting any other confident string, an empty one, a placeholder, the code rendered as English, would have reproduced the same defect one word smaller, so no substitute was chosen. A build-time warning was weighed and rejected: a warning is fail-open, the document still exists and can be transmitted, and nothing forces a downstream reader to consult it, which is not an acceptable disposition for a narrative that states the opposite of its entry. The builder is the conservative-on-emit half of this library and already refuses seven other unsatisfiable inputs the same way, one of them purely as a runtime guard for untyped callers.

    The cost, stated rather than elided. This is a behaviour change on a published package: input that previously produced a document now throws. Every such input produced a document whose narrative the entry did not support, so nothing that was correct stops working, but a caller relying on the old output will now see an error. No warning code was added, renamed or reworded, and no existing message moved. The empty-string and whitespace-only cases are refused as well and those are reachable from TypeScript, on the argument that an empty attested narrative beside a coded entry loses the clinical fact rather than stating it.

    The bound, so a green build is not read as more than it is. Only labels that reach the narrative are guarded. A BuildCode that reaches the entry alone, an allergy type, a result interpretation, a medication or vaccine route, a reaction, a severity, a criticality, is deliberately untouched: @displayName is optional on a v3 CD, so omitting the attribute states nothing false and refusing it would reject conformant input. An absent optional object keeps its existing fallback, because "no smoking status recorded" really is unknown; only an object supplied without a label is refused.

... (truncated)

Commits
  • 4fb4c9f Version Packages (#104)
  • 89c8ec2 fix(phi-scan): scan the tracked corpus every route used to read past (#103)
  • 941afff docs: relocate eight CLAUDE.md blocks to agent-notes to get under budget, and...
  • 0fec38f Version Packages (#101)
  • 9f1ce33 fix(builder): refuse a missing narrative label instead of rendering a positiv...
  • 0c4d67f fix(plan): report an edited document short its SHALL planned-medication effec...
  • a29202d feat(plan): report the dropped plan entries, the missing planned-medication e...
  • 4e47a2d Version Packages (#97)
  • 8b5b737 docs(readme): link the Cosyte lockup to cosyte.com (ASSETS) (#96)
  • 1fc7a08 fix(docs): name the real nonXmlBody accessor, and gate the CLAUDE.md/agent-no...
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [@cosyte/ccda](https://github.com/cosyte/ccda) from 0.0.8 to 0.0.13.
- [Release notes](https://github.com/cosyte/ccda/releases)
- [Changelog](https://github.com/cosyte/ccda/blob/main/CHANGELOG.md)
- [Commits](cosyte/ccda@v0.0.8...v0.0.13)

---
updated-dependencies:
- dependency-name: "@cosyte/ccda"
  dependency-version: 0.0.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Aug 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants